home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
source.lha
/
Pointer
/
pointer_test.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-28
|
6KB
|
209 lines
/* $Revision Header *** Header built automatically - do not edit! ***********
*
* (C) Copyright 1992 by Torsten Jürgeleit
*
* Name .....: pointer_test.c
* Created ..: Thursday 09-Jan-92 00:26:55
* Revision .: 1
*
* Date Author Comment
* ========= ==================== ====================
* 11-Jul-92 Torsten Jürgeleit now get pointer to console device
* 09-Jan-92 Torsten Jürgeleit Created this file!
*
****************************************************************************
*
* Test for mouse pointer functions
*
* $Revision Header ********************************************************/
/* Includes */
#include <exec/types.h>
#ifdef AZTEC_C
#include <functions.h> /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
#endif
#include <libraries/memwatch.h> /* header file for memory debug link library (Fish 240) - AFTER functions.h */
#include "/render/render.h"
#include "/gadgets/gadgets.h"
#include "pointer.h"
/* Defines */
#define WINDOW_WIDTH 600
#define WINDOW_HEIGHT 180
#define WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_BUTTON)
#define WINDOW_FLAGS (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
#define WINDOW_TITLE (UBYTE *)" Mouse pointer test "
#define RENDER_INFO_FLAGS (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
#define OPEN_WINDOW_FLAGS (USHORT)(OPEN_WINDOW_FLAG_CENTER_SCREEN | OPEN_WINDOW_FLAG_RENDER_PENS)
#define CLOSE_GADGET_X 16
#define CLOSE_GADGET_Y 5
/* Globals */
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Library *DiskfontBase;
struct Library *LayersBase;
struct Device *ConsoleDevice;
/* Statics */
STATIC struct NewWindow test_new_window = {
0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
};
STATIC struct TextAttr topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
FS_NORMAL, FPF_ROMFONT },
topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
FS_NORMAL, FPF_ROMFONT };
/* Defines for test gadgets */
#define TEST_GADGET_MOVE_POINTER 0
#define TEST_GADGET_BUSY_POINTER 1
#define TEST_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
#define TEST_GADGET1_FLAGS GADGET_DATA_FLAG_HOTKEY
#define TEST_GADGET1_LEFT_EDGE ((WINDOW_WIDTH / 2 - TEST_GADGET1_WIDTH) / 2)
#define TEST_GADGET1_TOP_EDGE ((WINDOW_HEIGHT - TEST_GADGET1_HEIGHT) / 2)
#define TEST_GADGET1_WIDTH ((12 + 2) * 10)
#define TEST_GADGET1_HEIGHT 19
#define TEST_GADGET1_TEXT "_Move pointer"
#define TEST_GADGET1_TEXT_ATTR &topaz60_attr
#define TEST_GADGET2_TYPE GADGET_DATA_TYPE_BUTTON
#define TEST_GADGET2_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_BUTTON_TOGGLE)
#define TEST_GADGET2_LEFT_EDGE (WINDOW_WIDTH - (TEST_GADGET2_WIDTH + TEST_GADGET1_LEFT_EDGE))
#define TEST_GADGET2_TOP_EDGE TEST_GADGET1_TOP_EDGE
#define TEST_GADGET2_WIDTH TEST_GADGET1_WIDTH
#define TEST_GADGET2_HEIGHT TEST_GADGET1_HEIGHT
#define TEST_GADGET2_TEXT "_Busy pointer"
#define TEST_GADGET2_TEXT_ATTR TEST_GADGET1_TEXT_ATTR
STATIC struct GadgetData test_gadget_data[] = {
{
TEST_GADGET1_TYPE, /* gd_Type */
TEST_GADGET1_FLAGS, /* gd_Flags */
TEST_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET1_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET1_WIDTH, /* gd_Width */
TEST_GADGET1_HEIGHT, /* gd_Height */
TEST_GADGET1_TEXT, /* *gd_Text */
TEST_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
{ 0, 0, 0 }
}, {
TEST_GADGET2_TYPE, /* gd_Type */
TEST_GADGET2_FLAGS, /* gd_Flags */
TEST_GADGET2_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET2_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET2_WIDTH, /* gd_Width */
TEST_GADGET2_HEIGHT, /* gd_Height */
TEST_GADGET2_TEXT, /* *gd_Text */
TEST_GADGET2_TEXT_ATTR, /* *gd_TextAttr */
{ 0, 0, 0 }
}, {
INTUISUP_DATA_END /* mark end of gadget data array */
}
};
/* Prototypes */
VOID test_action(struct RenderInfo *ri, struct Window *win,
struct GadgetList *gl);
/* Pragmas */
#pragma regcall(test_action(a0,a1,a2))
/* Mouse pointer test */
LONG
main(VOID)
{
struct IOStdReq io;
struct RenderInfo *ri;
struct Window *win;
struct GadgetList *gl;
MWInit((BPTR)NULL, 0L);
if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
if (GfxBase = OpenLibrary("graphics.library", 0L)) {
if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
if (LayersBase = OpenLibrary("layers.library", 0L)) {
if (!OpenDevice("console.device", -1L,
(struct IORequest *)&io, 0L)) {
ConsoleDevice = io.io_Device;
if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
if (win = open_window(ri, &test_new_window,
OPEN_WINDOW_FLAGS)) {
if (gl = create_gadgets(ri, &test_gadget_data[0], 0, 0,
NULL)) {
display_gadgets(win, gl);
test_action(ri, win, gl);
remove_gadgets(gl);
free_gadgets(gl);
}
close_window(win, FALSE);
}
free_render_info(ri);
}
CloseDevice((struct IORequest *)&io);
}
CloseLibrary(LayersBase);
}
CloseLibrary(DiskfontBase);
}
CloseLibrary(GfxBase);
}
CloseLibrary(IntuitionBase);
}
MWTerm();
return(0L);
}
/* Perform IDCMP action */
VOID
test_action(struct RenderInfo *ri, struct Window *win,
struct GadgetList *gl)
{
struct MsgPort *up = win->UserPort;
BOOL busy = FALSE, keepon = TRUE;
do {
struct IntuiMessage *msg;
WaitPort(up);
while (msg = (struct IntuiMessage *)get_msg(up)) {
switch (msg->Class) {
case CLOSEWINDOW :
keepon = FALSE;
break;
case ISUP_ID :
switch (msg->Code) {
case TEST_GADGET_MOVE_POINTER :
move_mouse_pointer(win, CLOSE_GADGET_X, CLOSE_GADGET_Y,
FALSE);
break;
case TEST_GADGET_BUSY_POINTER :
if (busy == FALSE) {
change_mouse_pointer(win, NULL, FALSE);
busy = TRUE;
} else {
restore_mouse_pointer(win);
busy = FALSE;
}
break;
}
break;
}
reply_msg(msg);
}
} while (keepon == TRUE);
if (busy == TRUE) {
restore_mouse_pointer(win);
}
}